home *** CD-ROM | disk | FTP | other *** search
- ##//######################################################### -*- c -*-
- ##//generic include for XXX. Do not use directly.
- ##
- ##//$Id: mfd-data-access.m2c 14170 2006-01-26 17:02:48Z dts12 $
- ##//####################################################################
- ##//####################################################################
- ##
- ## lower conf files get confused with multiple processing types, so
- ## set single options
- @eval $mfd_data_access_processing_type = "$m2c_processing_type"@
- @eval $m2c_processing_type = 'h'@
- @open ${name}_data_access.h@
- @eval $hack = "Id"@
- /*
- * Note: this file originally auto-generated by mib2c using
- * version $Revision: 14170 $ of $RCSfile$
- *
- * $$hack:$
- */
- @if $m2c_mark_boundary == 1@
- /** START code generated by $RCSfile$ $Revision: 14170 $ */
- @end@
- @eval $m2c_save = "$name"@
- @eval $name = "${name}_DATA_ACCESS"@
- @include generic-header-top.m2i@
- @eval $name = "$m2c_save"@
-
- /* *********************************************************************
- * function declarations
- */
-
- /* *********************************************************************
- * Table declarations
- */
- @foreach $table table@
- @ include m2c_setup_table.m2i@
- @ include details-table.m2i@
-
- ##@ eval $m2c_tmp=""@
- ##@ foreach $node index@
- ##@ include m2c_setup_node.m2i@
- ##@ eval $m2c_tmp="$m2c_tmp, $m2c_node_param_val"@
- ##@ end@ // for each index
-
- int ${context}_init_data(${context}_registration * ${context}_reg);
-
- @ include mfd-access-${m2c_table_access}-defines.m2i@
- int ${context}_row_prep( ${context}_rowreq_ctx *rowreq_ctx);
-
- @ if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
- int ${context}_validate_index( ${context}_registration * ${context}_reg,
- ${context}_rowreq_ctx *rowreq_ctx);
- @ foreach $node externalindex@
- @ include m2c_setup_node.m2i@
- int ${context}_${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx ); /* external */
- @ end@ # foreach externalindex
- @ foreach $node internalindex@
- @ include m2c_setup_node.m2i@
- int ${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx ); /* internal */
- @ end@ # foreach internalindex
- @ end@ # row creation/persistent
- @end@
-
- @eval $m2c_save = "$name"@
- @eval $name = "${name}_DATA_ACCESS"@
- @include generic-header-bottom.m2i@
- @eval $name = "$m2c_save"@
- ##//##################################################################
- ##//Do the .c file
- ##//##################################################################
- @eval $m2c_processing_type = 'c'@
- @open ${name}_data_access.c@
- /*
- * Note: this file originally auto-generated by mib2c using
- * version $Revision: 14170 $ of $RCSfile$
- *
- * $$hack:$
- */
- @include generic-source-includes.m2i@
-
- #include "${name}_data_access.h"
-
- /** @ingroup interface
- * @addtogroup data_access data_access: Routines to access data
- *
- * These routines are used to locate the data used to satisfy
- * requests.
- *
- * @{
- */
- @foreach $table table@
- @ include m2c_setup_table.m2i@
- @ include details-table.m2i@
-
- /**
- * initialization for ${context} data access
- *
- * This function is called during startup to allow you to
- * allocate any resources you need for the data table.
- *
- * @param ${context}_reg
- * Pointer to ${context}_registration
- *
- * @retval MFD_SUCCESS : success.
- * @retval MFD_ERROR : unrecoverable error.
- */
- int
- ${context}_init_data(${context}_registration * ${context}_reg)
- {
- DEBUGMSGTL(("verbose:${context}:${context}_init_data","called\n"));
-
- /*
- * TODO:303:o: Initialize $context data.
- */
- @ifconf ${table}_init_data.m2i@
- @ include ${table}_init_data.m2i@
- @else@
- @ if $m2c_include_examples == 1@
- $example_start
- /*
- * if you are the sole writer for the file, you could
- * open it here. However, as stated earlier, we are assuming
- * the worst case, which in this case means that the file is
- * written to by someone else, and might not even exist when
- * we start up. So we can't do anything here.
- */
- $example_end
- @ end@
-
- return MFD_SUCCESS;
- @end@ #ifconf
- } /* ${context}_init_data */
-
- @ include mfd-access-${m2c_table_access}-defines.m2i@
- /**
- * prepare row for processing.
- *
- * When the agent has located the row for a request, this function is
- * called to prepare the row for processing. If you fully populated
- * the data context during the index setup phase, you may not need to
- * do anything.
- *
- * @param rowreq_ctx pointer to a context.
- *
- * @retval MFD_SUCCESS : success.
- * @retval MFD_ERROR : other error.
- */
- int
- ${context}_row_prep( ${context}_rowreq_ctx *rowreq_ctx)
- {
- DEBUGMSGTL(("verbose:${context}:${context}_row_prep","called\n"));
-
- netsnmp_assert(NULL != rowreq_ctx);
-
- /*
- * TODO:390:o: Prepare row for request.
- * If populating row data was delayed, this is the place to
- * fill in the row for this request.
- */
-
- return MFD_SUCCESS;
- } /* ${context}_row_prep */
-
- ##//####################################################################
- @ if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
- /*
- * TODO:420:r: Implement $context index validation.
- */
- @ foreach $node externalindex@
- @ include m2c_setup_node.m2i@
- @ if $m2c_report_progress == 1@
- @ print | | +-> Processing index $node@
- @ end@
- @ include details-node.m2i@
- /**
- * check validity of ${node} external index portion
- *
- * NOTE: this is not the place to do any checks for the sanity
- * of multiple indexes. Those types of checks should be done in the
- * ${context}_validate_index() function.
- *
- * @retval MFD_SUCCESS : the incoming value is legal
- * @retval MFD_ERROR : the incoming value is NOT legal
- */
- int
- ${context}_${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx )
- {
- DEBUGMSGTL(("verbose:${context}:${context}_${node}_check_index","called\n"));
-
- netsnmp_assert(NULL != rowreq_ctx);
-
- /*
- * TODO:424:M: |-> Check $context external index $node.
- * check that index value in the table context (rowreq_ctx)
- * for the external index $node is legal.
- */
-
- return MFD_SUCCESS; /* external index $node ok */
- } /* ${context}_${node}_check_index */
-
- @ end@ # foreach externalindex
- @ foreach $node internalindex@
- @ include m2c_setup_node.m2i@
- @ if $m2c_report_progress == 1@
- @ print | | +-> Processing index $node@
- @ end@
- @ include details-node.m2i@
- /**
- * check validity of ${node} index portion
- *
- * @retval MFD_SUCCESS : the incoming value is legal
- * @retval MFD_ERROR : the incoming value is NOT legal
- *
- * @note this is not the place to do any checks for the sanity
- * of multiple indexes. Those types of checks should be done in the
- * ${context}_validate_index() function.
- *
- * @note Also keep in mind that if the index refers to a row in this or
- * some other table, you can't check for that row here to make
- * decisions, since that row might not be created yet, but may
- * be created during the processing this request. If you have
- * such checks, they should be done in the check_dependencies
- * function, because any new/deleted/changed rows should be
- * available then.
- *
- * The following checks have already been done for you:
- @if $node.enums == 1@
- * The value is one of $m2c_evals
- @elsif $node.ranges == 1@
- @ if ("$node.decl" eq "long") || ("$node.decl" eq "u_long")@
- @ eval $m2c_tmp_ns = "value"@
- @ else@
- @ eval $m2c_tmp_ns = "length"@
- @ end@
- * The $m2c_tmp_ns is in (one of) the range set(s): $m2c_evals
- @end@
- *
- * If there a no other checks you need to do, simply return MFD_SUCCESS.
- */
- int
- ${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx )
- {
- DEBUGMSGTL(("verbose:${context}:${node}_check_index","called\n"));
-
- netsnmp_assert(NULL != rowreq_ctx);
-
- /*
- * TODO:426:M: |-> Check $context index $node.
- * check that index value in the table context is legal.
- * (rowreq_ctx->tbl_index.$node)
- */
-
- return MFD_SUCCESS; /* $node index ok */
- } /* ${node}_check_index */
-
- @ end@ # foreach internalindex
- /**
- * verify specified index is valid.
- *
- * This check is independent of whether or not the values specified for
- * the columns of the new row are valid. Column values and row consistency
- * will be checked later. At this point, only the index values should be
- * checked.
- *
- * All of the individual index validation functions have been called, so this
- * is the place to make sure they are valid as a whole when combined. If
- * you only have one index, then you probably don't need to do anything else
- * here.
- *
- * @note Keep in mind that if the indexes refer to a row in this or
- * some other table, you can't check for that row here to make
- * decisions, since that row might not be created yet, but may
- * be created during the processing this request. If you have
- * such checks, they should be done in the check_dependencies
- * function, because any new/deleted/changed rows should be
- * available then.
- *
- *
- * @param ${context}_reg
- * Pointer to the user registration data
- * @param ${context}_rowreq_ctx
- * Pointer to the users context.
- * @retval MFD_SUCCESS : success
- * @retval MFD_CANNOT_CREATE_NOW : index not valid right now
- * @retval MFD_CANNOT_CREATE_EVER : index never valid
- */
- int
- ${context}_validate_index( ${context}_registration * ${context}_reg,
- ${context}_rowreq_ctx *rowreq_ctx)
- {
- int rc = MFD_SUCCESS;
-
- DEBUGMSGTL(("verbose:${context}:${context}_validate_index","called\n"));
-
- /** we should have a non-NULL pointer */
- netsnmp_assert( NULL != rowreq_ctx );
-
- /*
- * TODO:430:M: |-> Validate potential $context index.
- */
- if(1) {
- snmp_log(LOG_WARNING,"invalid index for a new row in the "
- "${context} table.\n");
- /*
- * determine failure type.
- *
- * If the index could not ever be created, return MFD_NOT_EVER
- * If the index can not be created under the present circumstances
- * (even though it could be created under other circumstances),
- * return MFD_NOT_NOW.
- */
- if(0) {
- return MFD_CANNOT_CREATE_EVER;
- }
- else {
- return MFD_CANNOT_CREATE_NOW;
- }
- }
-
- return rc;
- } /* ${context}_validate_index */
-
- @ end@ # persistent/row creation
- @end@
- ##
- /** @} */
- ##//####################################################################
- @if $m2c_mark_boundary == 1@
- /** END code generated by $RCSfile$ $Revision: 14170 $ */
- @end@
- @eval $m2c_processing_type = "$mfd_data_access_processing_type"@
-